Ana içeriğe geç

Agoric için SwingSet ve Cosmos Layer

Agoric, JavaScript tabanlı bir akıllı sözleşme platformudur ve SwingSet ve Cosmos Layer gibi farklı bileşenleri içerir.

SwingSet, Agoric'in sanal makine sistemi olarak bilinir. Bu sistem, Agoric'in güvenli ve izole edilmiş akıllı sözleşme çalışma ortamını sağlar. SwingSet, akıllı sözleşmelerin izolasyonunu sağlamak için yazılım çerçeveleri (vatlar) adı verilen birimlerde çalışır. Vatlar, işlevsel işlemlerin birleştirilmesini sağlar ve birbirinden izole edilmiştir. Her vat, kendi bellek alanına sahiptir ve diğer vatlarla iletişim kurmak için özel mekanizmalara sahiptir. Bu sayede, bir vatın hatalı veya kötü amaçlı davranışı diğer vatları etkilemez.

Cosmos Layer, Agoric'in zincir yapısıdır. Bu yapı, Agoric zincirinin nasıl çalışacağını ve işleyeceğini tanımlar. Cosmos Layer, Inter Blockchain Communication (IBC) standardını kullanarak diğer zincirlere bağlanabilir. Bu sayede, Agoric zinciri diğer zincirlerle etkileşim kurabilir ve diğer zincirlerle işlem yapabilir.

SwingSet ve Cosmos Layer, Agoric'in temel bileşenleridir ve platformun güvenliği ve ölçeklenebilirliği açısından önemlidirler. SwingSet, akıllı sözleşmelerin izole edilmiş bir ortamda çalışmasını sağlayarak güvenliği artırır. Cosmos Layer ise zincir yapısını yöneterek ölçeklenebilirliği sağlar ve diğer zincirlerle entegrasyonu mümkün kılar.

Aşağıda Agoric'te SwingSet kullanarak bir vat oluşturmanın basit bir örneği verilmiştir:

import { makeSwingsetController } from '@agoric/swingset-vat';

const config = {
bootstrap: 'bootstrap-file.js',
vats: {
myVat: {
sourceSpec: new URL('./myVat.js', import.meta.url).pathname,
},
},
};

async function setup() {
const controller = await makeSwingsetController(config);
return controller;
}

setup().then(controller => controller.run());

Bu kodda, makeSwingsetController fonksiyonu çağrılarak config nesnesi özellikleri belirtilerek bir SwingSet denetleyicisi oluşturulur. Ardından setup fonksiyonu çağrılarak denetleyiciyi başlatılır ve çalıştırılır. Bu örnekte, myVat adında bir vat oluşturulur ve myVat.js dosyası içinde tanımlanan işlevlerin çalışması sağlanır.

Bu örnekte SwingSet kullanarak bir vat oluşturulmuştur. Vat'lar, SwingSet'in güçlü izolasyon mekanizmaları sayesinde diğer vatlarla birbirinden izole edilmiştir. Bu da, vat'ların hatalı veya kötü amaçlı davranışlarının diğer vatları etkilemediği anlamına gelir.